package org.dr.springmvcdemo.scheduleTask.Quartz.ScheduleListen;

import org.quartz.*;

public class MySchedulerListener implements SchedulerListener {
    /**
     * 部署jobDetail时调用
     * @param trigger
     */
    @Override
    public void jobScheduled(Trigger trigger) {
        String jobName = trigger.getJobKey().getName();
        System.out.println(jobName + " jobDetail完成部署");
    }

    /**
     * 卸载jobDetail时调用
     * @param triggerKey
     */
    @Override
    public void jobUnscheduled(TriggerKey triggerKey) {
        System.out.println(triggerKey + " jobDetail完成卸载");
    }

    /**
     * 当一个Trigger处于再也不会触发的状态时调用这个方法
     * @param trigger
     */
    @Override
    public void triggerFinalized(Trigger trigger) {
        System.out.println("触发器被移除 " + trigger.getJobKey().getName());
    }

    /**
     * 发生在Trigger被暂停时
     * @param triggerKey
     */
    @Override
    public void triggerPaused(TriggerKey triggerKey) {
        System.out.println(triggerKey + " 正在被暂停");
    }

    /**
     * 发生在Trigger组被暂停时
     * @param triggerGroup
     */
    @Override
    public void triggersPaused(String triggerGroup) {
        System.out.println("触发器组 " + triggerGroup + " 正在被暂停");
    }

    /**
     * 发生在Trigger从暂停中恢复时
     * @param triggerKey
     */
    @Override
    public void triggerResumed(TriggerKey triggerKey) {
        System.out.println(triggerKey + " 正在从暂停中恢复");
    }

    /**
     * 发生在Trigger组从暂停中恢复时
     * @param triggerGroup
     */
    @Override
    public void triggersResumed(String triggerGroup) {
        System.out.println("触发器组 " + triggerGroup + " 正在从暂停中恢复");
    }

    @Override
    public void jobAdded(JobDetail jobDetail) {
        System.out.println(jobDetail.getKey() + " 添加工作任务");
    }

    @Override
    public void jobDeleted(JobKey jobKey) {
        System.out.println(jobKey + " 删除工作任务");
    }

    /**
     * 当jobDetail暂停时调用
     * @param jobKey
     */
    @Override
    public void jobPaused(JobKey jobKey) {
        System.out.println(jobKey + " 工作任务正在被暂停");
    }
    @Override
    public void jobsPaused(String jobGroup) {
        System.out.println("工作任务组 " + jobGroup + " 正在被暂停");
    }

    /**
     * job从暂停上恢复时调用
     * @param jobKey
     */
    @Override
    public void jobResumed(JobKey jobKey) {
        System.out.println(jobKey + " 正在从暂停中恢复");
    }
    @Override
    public void jobsResumed(String jobGroup) {
        System.out.println("工作任务组 " + jobGroup + " 正在从暂停中恢复");
    }

    /**
     * 在scheduler正常运行期间产生了一个严重错误时调用
     * @param msg
     * @param cause
     */
    @Override
    public void schedulerError(String msg, SchedulerException cause) {
        System.out.println("产生严重错误时调用：   " + msg + "  " + cause.getUnderlyingException());
    }

    /**
     *  当Scheduler处于StandBy模式时，调用该方法
     */
    @Override
    public void schedulerInStandbyMode() {
        System.out.println("调度器在挂起模式下调用");
    }

    @Override
    public void schedulerStarted() {
        System.out.println("调度器 开启时调用");
    }

    @Override
    public void schedulerStarting() {
        System.out.println("调度器 正在开启时调用");
    }

    @Override
    public void schedulerShutdown() {
        System.out.println("调度器 已经被关闭 时调用");
    }

    @Override
    public void schedulerShuttingdown() {
        System.out.println("调度器 正在被关闭 时调用");
    }

    /**
     * 当Scheduler中的数据被清除时，调用该方法。
     */
    @Override
    public void schedulingDataCleared() {
        System.out.println("调度器的数据被清除时调用");
    }
}
